1. Field
The present embodiments relate to versioning of programming languages. More specifically, the present embodiments relate to techniques for adaptive selection of programming language versions for compilation of software programs.
2. Related Art
As programming languages evolve, features of the programming languages may be added, removed, and/or modified. Furthermore, differences between an older version and a newer version of a programming language may cause software programs written under the older version to no longer be valid under the newer version. For example, the addition of a “foreach” keyword to a programming language may adversely affect the compilation of software programs that use “foreach” as an identifier.
To enable the use of features from a newer version of a programming language, incompatibilities with the newer version must be removed from a software program developed under an older version of the programming language. However, the removal of such incompatibilities may be time-consuming and/or tedious, resulting in significant overhead and/or delay before features of the newer version may be used in the software program. For example, the migration of a large code base with thousands of source files to a new version of a programming language may require months of manual editing of the source files before features of the new version may be used in the code base.
Hence, what is needed is a mechanism for facilitating the migration of code bases from older versions of programming languages to newer versions of the programming languages.